﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Chilis.Marketing.Common;
using Chilis.Marketing.Business.Logic;
using System.Data;
using Chilis.Marketing.Business.Entity;
using System.Text;

public partial class Opera_Requisitos : System.Web.UI.Page
{
    #region ATRIBUTOS

    private Constantes.ACCION accion;
    private BLCampanha campanhaBL;
    private BLActividad actividadBL;

    #endregion

    #region PROPIEDADES
    #endregion

    #region METODOS

    private void ActivarControles(bool activo)
    {
        this.txtCodigoCampanha.Enabled = false;
        this.txtNombreCampanha.Enabled = false;
        this.txtCodigoActividad.Enabled = false;
        this.txtNombreActividad.Enabled = false;
        this.txtCosto.Enabled = false;
    }

    private void CargarDatos(int idActividad)
    {
        this.campanhaBL = new BLCampanha();
        BECampanha campanhaBE = this.campanhaBL.obtenerCampanhaPorActividadId(idActividad);
        if (campanhaBE != null)
        {
            this.txtCodigoCampanha.Text = campanhaBE.IdCampanha.ToString().PadLeft(5, '0');
            this.txtNombreCampanha.Text = campanhaBE.Nombre.ToString();

            if (campanhaBE.LActividades != null && campanhaBE.LActividades.Count > 0)
            {
                BEActividad actividadBE = campanhaBE.LActividades[0];
                this.txtCodigoActividad.Text = actividadBE.IdActividad.ToString().PadLeft(5, '0');
                this.txtNombreActividad.Text = actividadBE.Nombre;
                this.txtCosto.Text = String.Format("{0:N}", actividadBE.Costo);
            }
        }
    }

    public void CargarGrillaListadoRecursoRol(bool deBuscar)
    {
        if (deBuscar == true)
        {
            this.gvRoles.PageIndex = 0;
        }

        int tempIdActividad = Constantes.idValorNulo;
        int.TryParse(this.txtCodigoActividad.Text, out tempIdActividad);

        this.actividadBL = new BLActividad();
        DataTable dt = this.actividadBL.obtenerRolesPorIdActividad(tempIdActividad);
        this.gvRoles.DataSource = dt;
        this.gvRoles.DataBind();
    }

    public void CargarGrillaListadoRecursoMaterial(bool deBuscar)
    {
        if (deBuscar == true)
        {
            this.gvMateriales.PageIndex = 0;
        }

        int tempIdActividad = Constantes.idValorNulo;
        int.TryParse(this.txtCodigoActividad.Text, out tempIdActividad);

        this.actividadBL = new BLActividad();
        DataTable dt = this.actividadBL.obtenerMaterialesPorIdActividad(tempIdActividad);
        this.gvMateriales.DataSource = dt;
        this.gvMateriales.DataBind();
    }

    private void CargarTitulos(string tituloTxt)
    {
        this.lblTitulo.Text = tituloTxt;
    }

    private void ProcesarEliminarRecursoRol(string idRecursoRol)
    {
        BLRecursoRol recursoRolBL = new BLRecursoRol();
        BERecursoRol recursoRolBE = new BERecursoRol();
        recursoRolBE.IdRecurso = int.Parse(idRecursoRol);
        recursoRolBE.Estado = Constantes.ESTADO.INACTIVO;
        recursoRolBL.eliminarRecursoRol(recursoRolBE);
        this.CargarGrillaListadoRecursoRol(true);
    }
    private void ConfigurarVerDetalleRol(GridViewRow fila)
    {
        Label lblTempCodigo = (Label)fila.FindControl("lblCodigo");
        ImageButton imgTempBtnVerDetalle = (ImageButton)fila.FindControl("btnVerDetalle");
        string cadenaURL = string.Empty;
        if (lblTempCodigo.Text != string.Empty)
        {
            cadenaURL += "../Gral/DetRol.aspx?acc=" + Constantes.ACCION.VER.ToString("D") + "&id=" + lblTempCodigo.Text;
        }
        StringBuilder click = new StringBuilder();
        click.AppendLine(String.Format("return verDetRol('{0}')", cadenaURL));
        imgTempBtnVerDetalle.Attributes.Add("onclick", click.ToString());
    }

    private void ConfigurarModificarRol(GridViewRow fila)
    {
        Label lblTempCodigo = (Label)fila.FindControl("lblCodigo");
        ImageButton imgTempBtnModificar = (ImageButton)fila.FindControl("btnModificar");
        string cadenaURL = string.Empty;
        if (lblTempCodigo.Text != string.Empty)
        {
            cadenaURL += "../Gral/DetRol.aspx?acc=" + Constantes.ACCION.MODIFICAR.ToString("D") + "&id=" + lblTempCodigo.Text;
        }
        StringBuilder click = new StringBuilder();
        click.AppendLine(String.Format("return verDetRol('{0}')", cadenaURL));
        imgTempBtnModificar.Attributes.Add("onclick", click.ToString());
    }
    private void ConfigurarEliminarRol(GridViewRow fila)
    {
        Label lblTempCodigo = (Label)fila.FindControl("lblCodigo");
        ImageButton imgTempBtnEliminar = (ImageButton)fila.FindControl("btnEliminar");
        StringBuilder click = new StringBuilder();
        click.AppendLine(String.Format("return EliminarRecursoRol('{0}')", lblTempCodigo.Text));
        imgTempBtnEliminar.Attributes.Add("onclick", click.ToString());
    }
    private void ConfigurarAsociarTrabajadorARol(GridViewRow fila)
    {
        Label lblTempCodigo = (Label)fila.FindControl("lblCodigo");
        ImageButton imgTempBtnAsociar = (ImageButton)fila.FindControl("btnAsociar");
        string cadenaURL = string.Empty;
        if (lblTempCodigo.Text != string.Empty)
        {
            cadenaURL += "../Gral/DetTrabajador.aspx?acc=" + Constantes.ACCION.ASOCIAR.ToString("D") + "&id=" + lblTempCodigo.Text;
        }
        StringBuilder click = new StringBuilder();
        click.AppendLine(String.Format("return verDetTrabajador('{0}')", cadenaURL));
        imgTempBtnAsociar.Attributes.Add("onclick", click.ToString());
    }


    private void ProcesarEliminarRecursoMaterial(string idRecursoMaterial)
    {
        BLRecursoMaterial recursoMaterialBL = new BLRecursoMaterial();
        BERecursoMaterial recursoMaterialBE = new BERecursoMaterial();
        recursoMaterialBE.IdRecurso = int.Parse(idRecursoMaterial);
        recursoMaterialBE.Estado = Constantes.ESTADO.INACTIVO;
        recursoMaterialBL.eliminarRecursoMaterial(recursoMaterialBE);
        this.CargarGrillaListadoRecursoMaterial(true);
    }
    private void ConfigurarVerDetalleMaterial(GridViewRow fila)
    {
        Label lblTempCodigo = (Label)fila.FindControl("lblCodigo");
        ImageButton imgTempBtnVerDetalle = (ImageButton)fila.FindControl("btnVerDetalle");

        int idActividad = (Request.QueryString["idac"] != null ? int.Parse(Request.QueryString["idac"].ToString()) : Constantes.idValorNulo);

        string cadenaURL = string.Empty;
        if (lblTempCodigo.Text != string.Empty)
        {
            cadenaURL += "../Gral/DetMaterial.aspx?acc=" + Constantes.ACCION.VER.ToString("D") + "&idac=" + idActividad.ToString() +  "&id=" + lblTempCodigo.Text;
        }
        StringBuilder click = new StringBuilder();
        click.AppendLine(String.Format("return verDetMaterial('{0}')", cadenaURL));
        imgTempBtnVerDetalle.Attributes.Add("onclick", click.ToString());
    }

    private void ConfigurarModificarMaterial(GridViewRow fila)
    {
        Label lblTempCodigo = (Label)fila.FindControl("lblCodigo");
        ImageButton imgTempBtnModificar = (ImageButton)fila.FindControl("btnModificar");

        int idActividad = (Request.QueryString["idac"] != null ? int.Parse(Request.QueryString["idac"].ToString()) : Constantes.idValorNulo);

        string cadenaURL = string.Empty;
        if (lblTempCodigo.Text != string.Empty)
        {
            cadenaURL += "../Gral/DetMaterial.aspx?acc=" + Constantes.ACCION.MODIFICAR.ToString("D") + "&idac=" + idActividad.ToString() + "&id=" + lblTempCodigo.Text;
        }
        StringBuilder click = new StringBuilder();
        click.AppendLine(String.Format("return verDetMaterial('{0}')", cadenaURL));
        imgTempBtnModificar.Attributes.Add("onclick", click.ToString());
    }
    private void ConfigurarEliminarMaterial(GridViewRow fila)
    {
        Label lblTempCodigo = (Label)fila.FindControl("lblCodigo");
        ImageButton imgTempBtnEliminar = (ImageButton)fila.FindControl("btnEliminar");
        StringBuilder click = new StringBuilder();
        click.AppendLine(String.Format("return EliminarRecursoMaterial('{0}')", lblTempCodigo.Text));
        imgTempBtnEliminar.Attributes.Add("onclick", click.ToString());
    }

    #endregion

    #region EVENTOS

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!Page.IsPostBack)
            {
                ControlHelper.RegisterClientScriptFile(this, "jquery.js", true);
                ControlHelper.RegisterClientScriptFile(this, "json2.js", true);

                ControlHelper.RegisterClientScriptFile(this, "thickbox.js", true);
                ControlHelper.RegisterClientScriptFile(this, "requisitos.js", true);

                if (Request.QueryString["idac"] != null)
                {
                    int idActividad = int.Parse(Request.QueryString["idac"].ToString());
                    this.CargarDatos(idActividad);
                    this.ActivarControles(false);
                    this.CargarGrillaListadoRecursoMaterial(true);
                    this.CargarGrillaListadoRecursoRol(true);

                    this.AddRol.HRef = "../Gral/DetRol.aspx?acc=" + Constantes.ACCION.NUEVO.ToString("D") + "&idac=" + idActividad.ToString() + "&TB_iframe=true&height=310&width=550";
                    this.AddMaterial.HRef = "../Gral/DetMaterial.aspx?acc=" + Constantes.ACCION.NUEVO.ToString("D") + "&idac=" + idActividad.ToString() + "&TB_iframe=true&height=440&width=550";
                }
                //this.AddRol.HRef = "../Gral/DetRol.aspx?acc=" + Constantes.ACCION.NUEVO.ToString("D") + "&idcmp=" + this.txtCodigo.Text + "&nocmp=" + this.txtNombre.Text + "&TB_iframe=true&height=470&width=560";

            }
        }
        catch (Exception ex)
        {
            Response.Redirect("~/Error.aspx?titError=" + Mensajes.msjeError_MostrarDetalle + "&descError=" + ex.Message, false);
        }
    }

    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("DetCampanha.aspx?acc=" + Constantes.ACCION.ASOCIAR.ToString("D") + "&id=" + Request.QueryString["idcmp"].ToString());
        //Response.Redirect("Campanha.aspx");
    }

    protected void gvMateriales_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        this.gvMateriales.PageIndex = e.NewPageIndex;
        this.CargarGrillaListadoRecursoMaterial(false);
    }
    protected void gvMateriales_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        Constantes.ACCION accion = Constantes.ACCION.NINGUNO;
        accion = Constantes.ObtenerEnumAccion(e.CommandName);

        if (accion == Constantes.ACCION.NINGUNO)
        {
            return;
        }

        GridViewRow fila = ((GridViewRow)((Control)e.CommandSource).NamingContainer);
        string idRecursoRol = ((Label)fila.FindControl("lblCodigo")).Text;


        switch (accion)
        {
            case Constantes.ACCION.NINGUNO:
                break;
            case Constantes.ACCION.VER:
                break;
            case Constantes.ACCION.NUEVO:
                break;
            case Constantes.ACCION.MODIFICAR:
                break;
            case Constantes.ACCION.ELIMINAR:
                this.ProcesarEliminarRecursoMaterial(idRecursoRol);
                break;
            case Constantes.ACCION.ASOCIAR:
                break;
            case Constantes.ACCION.APROBAR:
                break;
            case Constantes.ACCION.GENERAR_REPORTE:
                break;
            case Constantes.ACCION.ANULAR:
                break;
            default:
                break;
        }
    }
    protected void gvMateriales_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            GridViewRow fila = e.Row;
            this.ConfigurarVerDetalleMaterial(fila);
            this.ConfigurarModificarMaterial(fila);
            this.ConfigurarEliminarMaterial(fila);
        }
    }

    protected void gvRoles_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        this.gvRoles.PageIndex = e.NewPageIndex;
        this.CargarGrillaListadoRecursoRol(false);
    }
    protected void gvRoles_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        Constantes.ACCION accion = Constantes.ACCION.NINGUNO;
        accion = Constantes.ObtenerEnumAccion(e.CommandName);

        if (accion == Constantes.ACCION.NINGUNO)
        {
            return;
        }

        GridViewRow fila = ((GridViewRow)((Control)e.CommandSource).NamingContainer);
        string idRecursoRol = ((Label)fila.FindControl("lblCodigo")).Text;

        switch (accion)
        {
            case Constantes.ACCION.NINGUNO:
                break;
            case Constantes.ACCION.VER:
                break;
            case Constantes.ACCION.NUEVO:
                break;
            case Constantes.ACCION.MODIFICAR:
                break;
            case Constantes.ACCION.ELIMINAR:
                this.ProcesarEliminarRecursoRol(idRecursoRol);
                break;
            case Constantes.ACCION.ASOCIAR:
                break;
            case Constantes.ACCION.APROBAR:
                break;
            case Constantes.ACCION.GENERAR_REPORTE:
                break;
            case Constantes.ACCION.ANULAR:
                break;
            default:
                break;
        }
    }
    protected void gvRoles_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            GridViewRow fila = e.Row;
            this.ConfigurarVerDetalleRol(fila);
            this.ConfigurarModificarRol(fila);
            this.ConfigurarAsociarTrabajadorARol(fila);
            this.ConfigurarEliminarRol(fila);
        }
    }

    

    #endregion

    
}